Mostly-Functional Behavior in Java Programs
نویسندگان
چکیده
We present a lightweight type-and-effect system for Java programs that features two major innovations over extant object-oriented effects systems: initialization effects, which are writes to an object’s state while it is being constructed, and quiescing fields, which are fields that are never written after an object is constructed. We also present a novel taxonomy of degrees of method purity in object-oriented programs, which characterizes methods whose effects are confined to their receiver object. Finally, we find significant amounts of mostly-functional behavior in realistic Java programs: in the benchmarks we analyzed, between 48–53% of declared fields were identifiable as quiescing and between 24–78% of dynamic field reads were from quiescing fields.
منابع مشابه
Debugging of Java Programs using a model-based approach
Model-based diagnosis is a successful AI technique for diagnosing physical systems but faces new challenges when applied to finding faults in software, i.e., debugging. Previous work has mostly dealt with modeling the behavior of programming languages with exploitable special properties: logic, concurrent, or functional. This paper presents a model that is usable for the representation of imper...
متن کاملJade – Java Diagnosis Experiments Status and Outlook
Model-based diagnosis is a successful AI technique for diagnosing physical systems but faces new challenges when applied to finding faults in software, i.e., debugging. Previous work has mostly dealt with modeling the behavior of programming languages with exploitable special properties: logic, concurrent, or functional. In this paper we describe the objectives, the current state, and the addre...
متن کاملCoverage testing of Java programs and components
Although software testing is a crucial activity in the software development process, only recently have more sound and consistent testing tools become available for testing Java programs and their components. These tools support mostly functional and control-flow based structural criteria. In this paper we explore control-flow and data-flow based coverage criteria to support the testing of Java...
متن کاملFrappé: Functional Reactive Programming in Java
Functional Reactive Programming (FRP) is a declarative programming model for constructing interactive applications based on a continuous model of time. FRP programs are described in terms of behaviors (continuous, timevarying, reactive values), and events (conditions that occur at discrete points in time). This paper presents Frappé, an implementation of FRP in the Java progamming language. The...
متن کاملFunctional Adaptive Programming with DemeterF
In this paper we present a new functional traversal abstraction for processing OO data structures that decomposes traversal computation into three function objects and a traversal control function. Function objects compute and combine values over a general traversal while the control function allows programmers to limit the extent of a traversal. Our new abstraction is supported by a Java libra...
متن کامل